package com.anjufang.utils.page;


import com.anjufang.common.xss.SQLFilter;
import com.anjufang.utils.StringUtils;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 查询参数
 *
 */
public class Query extends LinkedHashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	// 当前页码
	private int page;
	// 起始数
	private int offset;
	// 每页条数
	private int limit;

	public Query(Map<String, Object> params) {
		this.putAll(params);

		// 分页参数
		if (StringUtils.isBlank(params.get("start")) || Integer.parseInt(params.get("start").toString()) < 1) {
			this.page = 1;
			this.offset = 0;
		} else {
			this.offset = Integer.parseInt(params.get("start").toString());
		}
		if (StringUtils.isBlank(params.get("length"))) {
			this.limit = 20;
		} else {
			this.limit = Integer.parseInt(params.get("length").toString());
		}
		// 适配app端分页
		if (StringUtils.isNotBlank(params.get("page"))) {
			this.page = Integer.parseInt(params.get("page").toString());
			this.offset = (this.page-1) * limit;
		}
		this.put("offset", offset);
		//this.put("page", offset / limit + 1);
		this.put("limit", limit);

		// 防止SQL注入（因为sidx、order是通过拼接SQL实现排序的，会有SQL注入风险）
		String sidx = (String) params.get("sidx");
		String order = (String) params.get("order");
		if (StringUtils.isNotBlank(sidx)) {
			this.put("sidx", SQLFilter.sqlInject(sidx));
		}
		if (StringUtils.isNotBlank(order)) {
			this.put("order", SQLFilter.sqlInject(order));
		}

	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public int getOffset() {
		return offset;
	}

	public void setOffset(int offset) {
		this.offset = offset;
	}

	public int getLimit() {
		return limit;
	}

	public void setLimit(int limit) {
		this.limit = limit;
	}
}
